import { ref } from 'vue';

const tempPhotoPath = ref(''); // 临时照片路径
const processedImage = ref(''); // 处理后的图片路径
const showCrop = ref(false); // 是否显示裁剪界面
const savedImages = ref([]); // 保存的图片列表
const userLocation = ref({}); // 用户位置信息
const userInfo = {
    name: '张三',
    phone: '13800138000'
}; // 用户信息

// 拍照功能
const takePhoto = () => {
    uni.chooseImage({
        sourceType: ['camera'],
        success: (res) => {
            tempPhotoPath.value = res.tempFilePaths[0];
            showCrop.value = true;
        },
        fail: (err) => {
            console.error('拍照失败：', err);
        }
    });
};

// 确认裁剪
const confirmCrop = () => {
    // 这里可以使用第三方裁剪库或调用裁剪API实现具体的裁剪功能
    // 裁剪完成后，将裁剪后的图片添加水印并显示
    // 模拟裁剪后的图片路径
    const croppedImagePath = tempPhotoPath.value;
    addWatermarkAndDisplay(croppedImagePath);
    showCrop.value = false;
};

// 取消裁剪
const cancelCrop = () => {
    showCrop.value = false;
};

// 添加水印并显示图片
const addWatermarkAndDisplay = (imagePath) => {
    // 使用Canvas添加水印
    const ctx = uni.createCanvasContext('watermark-canvas');
    ctx.drawImage(imagePath, 0, 0, 300, 300);

    // 获取位置信息
    uni.getLocation({
        success: (res) => {
            userLocation.value = res;
            const now = new Date();
            const time = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')} ${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}`;

            // 添加水印文字
            ctx.setFontSize(12);
            ctx.setFillStyle('white');
            ctx.fillText(`拍照时间: ${time}`, 10, 20);
            ctx.fillText(`经纬度: ${res.latitude.toFixed(6)}, ${res.longitude.toFixed(6)}`, 10, 40);
            ctx.fillText(`姓名: ${userInfo.name}`, 10, 60);
            ctx.fillText(`手机号: ${userInfo.phone}`, 10, 80);

            // 将Canvas内容转换为图片
            ctx.draw(false, () => {
                uni.canvasToTempFilePath({
                    canvasId: 'watermark-canvas',
                    success: (res) => {
                        processedImage.value = res.tempFilePath;
                        saveImage(res.tempFilePath, time);
                    },
                    fail: (err) => {
                        console.error('Canvas转换失败：', err);
                    }
                });
            });
        },
        fail: (err) => {
            console.error('获取位置失败：', err);
            // 无法获取位置时，仍然添加其他水印信息
            const now = new Date();
            const time = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')} ${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}`;

            ctx.setFontSize(12);
            ctx.setFillStyle('white');
            ctx.fillText(`拍照时间: ${time}`, 10, 20);
            ctx.fillText(`姓名: ${userInfo.name}`, 10, 40);
            ctx.fillText(`手机号: ${userInfo.phone}`, 10, 60);

            // 将Canvas内容转换为图片
            ctx.draw(false, () => {
                uni.canvasToTempFilePath({
                    canvasId: 'watermark-canvas',
                    success: (res) => {
                        processedImage.value = res.tempFilePath;
                        saveImage(res.tempFilePath, time);
                    },
                    fail: (err) => {
                        console.error('Canvas转换失败：', err);
                    }
                });
            });
        }
    });
};

// 保存图片
const saveImage = (imagePath, time) => {
    uni.saveFile({
        tempFilePath: imagePath,
        success: (res) => {
            const newImage = {
                path: res.savedFilePath,
                name: `photo_${new Date().getTime()}.jpg`,
                size: (res.savedFilePath.length / 1024).toFixed(2), // 简单估算大小，实际应通过文件操作获取
                time: time
            };
            savedImages.value.unshift(newImage);
        },
        fail: (err) => {
            console.error('保存图片失败：', err);
        }
    });
};

// 初始化加载已保存的图片
const loadSavedImages = () => {
    // 这里可以从本地存储中加载已保存的图片信息
    // 示例代码：
    uni.getSavedFileList({
        success: (res) => {
            res.fileList.forEach(file => {
                uni.getFileInfo({
                    filePath: file.filePath,
                    success: (infoRes) => {
                        const newImage = {
                            path: file.filePath,
                            name: file.fileName,
                            size: (infoRes.size / 1024).toFixed(2),
                            time: '未知时间' // 实际时间需要在保存时记录
                        };
                        savedImages.value.push(newImage);
                    }
                });
            });
        },
        fail: (err) => {
            console.error('获取已保存文件列表失败：', err);
        }
    });
};

// 页面加载时初始化
loadSavedImages();

export default {
    setup() {
        return {
            tempPhotoPath,
            processedImage,
            showCrop,
            savedImages,
            takePhoto,
            confirmCrop,
            cancelCrop
        };
    }
};